From: Colin Walters Date: Tue, 26 Sep 2017 21:21:59 +0000 (-0400) Subject: lib/pull: Don't request deltas for unchanged commits X-Git-Tag: archive/raspbian/2022.1-3+rpi1~1^2~4^2~31^2~16 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https://%22Program/%22http:/www.example.com/cgi/%22https:/%22Program?a=commitdiff_plain;h=5b860fba05651b075e10e19b295a1d00ebb5b8e2;p=ostree.git lib/pull: Don't request deltas for unchanged commits I noticed this while debugging why I was seeing "2 metadata objects" fetched for a different PR. I knew 1 was detached meta, but the other turned out to be this. There's no reason to request a delta if the ref is unchanged. Closes: #1220 Approved by: jlebon --- diff --git a/src/libostree/ostree-repo-pull.c b/src/libostree/ostree-repo-pull.c index b187175c..8a699ca0 100644 --- a/src/libostree/ostree-repo-pull.c +++ b/src/libostree/ostree-repo-pull.c @@ -3117,10 +3117,14 @@ initiate_request (OtPullData *pull_data, g_clear_pointer (&delta_from_revision, g_free); } - /* This is similar to the below, except we *might* use the previous - * commit, or we might do a scratch delta first. + /* If the current ref is the same, we don't do a delta request, just a + * scan. Otherise, use the previous commit if available, or a scratch + * delta. */ - initiate_delta_request (pull_data, delta_from_revision ?: NULL, to_revision, ref); + if (delta_from_revision && g_str_equal (delta_from_revision, to_revision)) + queue_scan_one_metadata_object (pull_data, to_revision, OSTREE_OBJECT_TYPE_COMMIT, NULL, 0, ref); + else + initiate_delta_request (pull_data, delta_from_revision ?: NULL, to_revision, ref); } else {